package com.pxst.bank.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.pxst.bank.entity.SysAvailableBankEntity;
import com.pxst.bank.entity.SysBankReceiveRecordEntity;
import com.pxst.bank.req.BankDetailReq;
import com.pxst.bank.req.BankDetailSearchReq;
import com.pxst.bank.req.BankSearchReq;
import com.pxst.bank.req.BankUpdateReq;
import com.pxst.bank.resp.*;
import com.pxst.internalReports.req.BankAccountListReq;
import com.pxst.internalReports.resp.AccountListResp;
import com.pxst.internalReports.resp.BankAccountListResp;
import com.pxst.req.BasePageRsp;
import com.pxst.resp.ApiResp;
import com.pxst.resp.PageResp;
import icu.mhb.mybatisplus.plugln.base.service.JoinIService;

import javax.swing.*;
import java.util.List;
import java.util.Map;

/** 
* @author yangxy
* @version 创建时间：2023年9月7日 下午4:35:48 
*/
public interface SysAvailableBankService extends JoinIService<SysAvailableBankEntity> {

    /**
     * 银行账户监控列表查询接口
     * @param bankAccountListReq
     * @return ApiResp<PageResp<BankAccountListResp>>
     */
    ApiResp<PageResp<BankAccountListResp>> getBankAccountList(BankAccountListReq bankAccountListReq);

    /**
     * 银行账户监控列表中账户代码in change功能接口
     * @param id
     * @return ApiResp<SysBankReceiveRecordEntity>
     */
    ApiResp<SysBankReceiveRecordEntity> take(Long id);

    /**
     * 银行账户监控列表中账户代码归还功能接口
     * @param id
     * @return ApiResp<SysBankReceiveRecordEntity>
     */
    ApiResp<SysBankReceiveRecordEntity> returnCard(Long id);

    /**
     * 银行账户监控强制归还功能接口
     * @param id
     * @return ApiResp<String>
     */
    ApiResp<String> forceReturnCards(Long id);

    /**
     * 账户列表查询接口
     * @param type
     * @return ApiResp<List<Map<String,List<AccountListResp>>>>
     */
    ApiResp<List<Map<String, List<AccountListResp>>>> getAccountList(Integer type);

    //银行卡下拉框信息
    ApiResp<BankCardResp> getInfo();

    //银行卡详情
    ApiResp<BankCardResp> getBank(Long id);

    /**
     * 银行-搜索
     * @param bankSearchReq 银行-搜索请求类
     * @return
     */
    ApiResp<List<BankSearchResp>> getBankListByCondition(BankSearchReq bankSearchReq);

    /**
     * 银行-编辑
     * @param id 银行对象id
     * @param bankUpdateReq 需要修改的银行对象的值
     * @return
     */
    ApiResp<Spring> updateBankById(Long id, BankUpdateReq bankUpdateReq);

    /**
     * 银行-新增
     * @param sysAvailableBankEntity 创建的银行对象的信息
     * @return
     */
    ApiResp<String> create(SysAvailableBankEntity sysAvailableBankEntity);

    /**
     * 银行-获取列表信息
     * @param basePageRsp 分页参数
     * @return
     */
    ApiResp<PageResp<BankSearchResp>> getBankInfoList(BasePageRsp basePageRsp);

    /**
     * 银行-详情
     * @param bankDetailReq 银行详情请求类
     * @return
     */
    ApiResp<List<BankDetailResp>> getBankById(BankDetailReq bankDetailReq);

    /**
     * 银行-详情-搜索
     * @param bankDetailSearchReq 搜索（条件查询）请求类
     * @return
     */
    ApiResp<List<BankDetailResp>> getBankLogByCondition(BankDetailSearchReq bankDetailSearchReq);

    /**
     * 获取所有可用银行数据
     * @return
     */
    ApiResp<List<AvailableBankListResp>> getAvailableBank();
}
